package com.relytosoft.mizar.analyze.strategy.algorithm.face.feign;

import com.relytosoft.dubhe.common.core.object.ResponseResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.net.URI;

/**
 * @author Jierry
 * @version 2022/5/11.
 */
@FeignClient(url = "EMPTY", name = "Analyze-Strategy-Algo-Face")
public interface AlgoFaceFeignService {

    @PostMapping("/algo/task/test")
    ResponseResult createTask(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/task/add")
    ResponseResult createTask(URI uri, @RequestBody String bodys, @RequestParam(name = "statusUploadUrl", required = false) String statusUploadUrl, @RequestParam(name = "uploadUrl", required = false) String uploadUrl);

    @GetMapping("/algo/task/stop")
    ResponseResult stopTask(URI uri, @RequestParam(name = "taskId") String taskId);

    @PostMapping("/algo/feature/extraction")
    ResponseResult feartureExtraction(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/feature/comparison")
    ResponseResult feartureComparison(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/group/add")
    ResponseResult createGroup(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/group/delete")
    ResponseResult deleteGroup(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/person/add")
    ResponseResult createPerson(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/person/delete")
    ResponseResult deletePerson(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/person/search")
    ResponseResult searchPerson(URI uri, @RequestBody String bodys);

    @PostMapping("/algo/disposition/add")
    ResponseResult createDisposition(URI uri, @RequestBody String bodys, @RequestParam(name = "uploadUrl", required = false) String uploadUrl);

    @PostMapping("/algo/disposition/delete")
    ResponseResult deleteDisposition(URI uri, @RequestParam(name = "dispositionId") String dispositionId);
}
